Forwarded from Библиотека задач по Python | тесты, код, задания
Что представляют собой генераторы в Python, как функционирует метод send() в этих генераторах и каким образом его можно применять для управления их поведением?
Генераторы в Python представляют собой функции, которые применяют оператор yield для возврата значений и временной приостановки выполнения. С помощью метода send() можно отправлять данные обратно в генератор, которые затем могут быть использованы при следующем возобновлении его работы. Это делает генераторы двусторонними, позволяя не только получать значения, но и передавать данные внутрь.
Генераторы в Python представляют собой функции, которые применяют оператор yield для возврата значений и временной приостановки выполнения. С помощью метода send() можно отправлять данные обратно в генератор, которые затем могут быть использованы при следующем возобновлении его работы. Это делает генераторы двусторонними, позволяя не только получать значения, но и передавать данные внутрь.
🔥 Конкурс: 30 000 ₽ за самую смешную IT-новость
Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.
👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.
🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе
🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.
📅 Сроки: прием новостей до 11 мая включительно
Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8
Осталась неделя — ждем ваших новостей!
Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.
👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.
🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе
🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.
📅 Сроки: прием новостей до 11 мая включительно
Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8
Осталась неделя — ждем ваших новостей!
Google Docs
Конкурс на самую смешную IT-новость
Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!
Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переворачиваете её с ног на голову, чтобы смеялись…
Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переворачиваете её с ног на голову, чтобы смеялись…
Junior Python Developer (Data) — до 200 000, удалёнка
Team Lead (Python) команды разработки — от 350 000 до 450 000 ₽, удалёнка (Москва)
Junior Python developer — от 100 000 до 130 000 ₽, офис (Москва)
Python разработчик, гибрид (Москва, Санкт-Петербург)
Программист Python junior — от 100 000 ₽, гибрид (Москва)
Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
Длинные логические выражения — бич читаемости. Вот простой пример:
if user["verified"] and event["date"] > datetime.now() and not event["full"]:
print("Here's the event signup form...")
Выглядит компактно, но читается не очень. Есть несколько способов сделать лучше.
if (user["verified"]
and event["date"] > datetime.now()
and not event["full"]):
print("Here's the event signup form...")
PEP8 рекомендует именно такой стиль — с операторами (
and
, or
) в начале строки.user_is_verified = user["verified"]
event_in_future = event["date"] > datetime.now()
event_not_full = not event["full"]
if user_is_verified and event_in_future and event_not_full:
print("Here's the event signup form...")
Такой подход улучшает понимание выражения до того, как вы вчитываетесь в детали.
def is_verified(user): return user["verified"]
def in_future(event): return event["date"] > datetime.now()
def not_full(event): return not event["full"]
if is_verified(user) and in_future(event) and not_full(event):
print("Here's the event signup form...")
Функции полезны, если важно сохранить short-circuit поведение (когда выражения дальше не выполняются, если результат уже ясен).
Если видите выражение вида
not (a or b)
— можно применить трансформацию:# Было:
not (a or b)
# Стало:
not a and not b
Пример:
def can_only_read(user):
return not (
user["role"] == "admin"
or "edit" in user["permissions"]
)
Упростим по де Моргану:
def can_only_read(user):
return user["role"] != "admin" and "edit" not in user["permissions"]
Теперь читается проще и интуитивнее.
✅ Вывод: не бойтесь разбивать выражения, давать им имена и упрощать через логические законы. Код должен быть понятным не только компьютеру, но и людям.
Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🏗 7 архитектурных паттернов, которые должен знать каждый программист
Хочешь писать код, который не разваливается через полгода? Понимание архитектурных паттернов — ключ к стабильным и масштабируемым приложениям.
📌 Мы собрали 7 базовых подходов, которые должен знать каждый разработчик. Подходит для тех, кто хочет прокачать архитектурное мышление, уверенно проходить собеседования и строить проекты «на вырост».
👉 Ссылка на статью: https://clc.to/tgproglibacademy6
Библиотека питониста
Хочешь писать код, который не разваливается через полгода? Понимание архитектурных паттернов — ключ к стабильным и масштабируемым приложениям.
📌 Мы собрали 7 базовых подходов, которые должен знать каждый разработчик. Подходит для тех, кто хочет прокачать архитектурное мышление, уверенно проходить собеседования и строить проекты «на вырост».
👉 Ссылка на статью: https://clc.to/tgproglibacademy6
Библиотека питониста
👍 Команда дня: contextlib.suppress
Сегодня разберём полезную команду для работы с contextlib.suppress — удобный способ игнорировать определённые исключения без громоздкого try-except.
Зачем это нужно:
✅ Упрощает код, когда вы хотите молча пропустить определённые ошибки.
✅ Например, удаление файла, который может не существовать, или обработка данных, где некоторые ключи могут отсутствовать.
Пример из реальной жизни:
Библиотека питониста #буст
Сегодня разберём полезную команду для работы с contextlib.suppress — удобный способ игнорировать определённые исключения без громоздкого try-except.
from contextlib import suppress
# Игнорируем FileNotFoundError при удалении файла
with suppress(FileNotFoundError):
import os
os.remove("non_existent_file.txt")
Зачем это нужно:
Пример из реальной жизни:
data = {"name": "Alice"}
with suppress(KeyError):
print(data["age"]) # Не сломается, даже если ключа "age" нет
Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Использование старых модулей может привести к неожиданным ошибкам в проектах.
Вот 11 устаревших Python-модулей и их современные аналоги:
Модуль
pipes
был удален, так как был заменен более мощным и кросс-платформенным модулем subprocess
.import subprocess
result = subprocess.run("echo Hello | tr a-z A-Z", shell=True, capture_output=True, text=True)
print(result.stdout) # HELLO
Тип
Text
был предназначен для совместимости с Python 2, и теперь его можно заменить на str
.def greet(name: str) -> str:
return f"Hello, {name}!"
Модуль
urllib
устарел для работы с HTTP-запросами. Вместо него лучше использовать requests
или urllib3
.import requests
response = requests.post('https://httpbin.org/post', json={'name': 'Yang'})
print(response.json())
Модуль
crypt
устарел и его заменил более безопасный модуль bcrypt
для хеширования паролей.import bcrypt
password = b"strongpassword"
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
С Python 3.9 можно использовать встроенные типы без импорта из модуля
typing
.def func(x: list[int]) -> dict[str, int]:
return {}
Использование
%
или .format()
устарело. Современный способ — это f-строки.name = "Yang"
print(f"My name is {name}.")
Модуль
cgi
устарел и заменен современными фреймворками для веб-разработки, такими как Flask
или FastAPI
.Модуль
ossaudiodev
устарел, и для работы с аудио рекомендуется использовать такие модули, как pyaudio
или sounddevice
.Модуль
pickle
может быть опасным для использования, так как есть риски выполнения вредоносного кода. Для безопасной сериализации лучше использовать json
.import json
data = {"name": "Yang"}
with open('data.json', 'w') as f:
json.dump(data, f)
Эти модули устарели, и теперь лучше использовать
asyncio
для асинхронного программирования.Модуль
random
использует предсказуемый алгоритм, который небезопасен для генерации паролей. Используйте secrets
для криптографически стойких случайных чисел.import secrets
password = secrets.token_hex(16)
Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🎙 Что послушать: Developer Trends 2025
Новый выпуск подкаста Talk Python to Me посвящён главным трендам 2025 года:
➡️ какие технологии на подъёме,
➡️ что показывает последний опрос Stack Overflow,
➡️ и куда движется Python-сообщество.
📌 Темы:
— Стоит ли изучать новые базы данных или это хайп?
— Что теряет актуальность?
— Как поменялись роли разработчиков и ожидания в индустрии?
▶️ Слушать: https://clc.to/4neIiA
Библиотека питониста #буст
Новый выпуск подкаста Talk Python to Me посвящён главным трендам 2025 года:
📌 Темы:
— Стоит ли изучать новые базы данных или это хайп?
— Что теряет актуальность?
— Как поменялись роли разработчиков и ожидания в индустрии?
▶️ Слушать: https://clc.to/4neIiA
Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Разработчики представили ty — новый инструмент для проверки типов и language server для Python, написанный на Rust. Обещают высокую скорость и удобство интеграции с редакторами.
⚠️ Пока что это pre-release:
— баги,
— отсутствующие фичи,
— возможны критические ошибки.
ty ещё не готов к продакшну, но активно развивается. Инструмент уже вызывает интерес у сообщества — особенно за счёт скорости и амбиций.
👀 Следим за развитием: https://clc.to/1jvRfg
Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Python известен своей простотой, но за лаконичным синтаксисом скрываются мощные и недооценённые возможности.
В этой подборке — 14 нестандартных приёмов: от «непитоничных» конструкций до малоизвестных трюков, которые помогают писать код гибче, чище и умнее.
🔍 Внутри:
— неожиданные фичи
— примеры и объяснения
— ссылки на ресурсы для углубления
📄 Читайте статью и удивляйтесь, на что способен Python: https://clc.to/YzUlOA
Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Холивар: Linux — для гибкости, macOS — для эстетики, Windows — для универсальности
Программисты, делитесь: на чём предпочитаете писать код?
🐧 Linux: терминал и свобода
📝 Максимальный контроль — можно настроить всё: от ядра до оконного менеджера. Arch, Manjaro, Kali? Полный выбор.
📝 Open Source: свободное ПО без необходимости платить за лицензии.
📝 Терминал — главный инструмент.
Минусы:
— Настройка драйверов и оборудования может занять время.
— Работа с проприетарным ПО (например, Photoshop) — отдельный квест.
— Интерфейс не всегда дружелюбен для новичков.
🍎 macOS: стиль и стабильность
📝 Экосистема Apple: Xcode, iOS-разработка, отличная интеграция между устройствами.
📝 Стабильность и надёжность — система работает как часы.
📝 Приятный интерфейс и дизайн, который вдохновляет.
Минусы:
— Высокая цена на устройства.
— Ограниченные возможности апгрейда.
— Закрытая система с меньшей гибкостью.
🪟 Windows: универсальный солдат
📝 Работает «из коробки»: Visual Studio, Unity, .NET — всё готово для разработки.
📝 Поддержка большинства игр и софта.
📝 Огромный выбор устройств: от бюджетных до топовых игровых машин.
Минусы:
— Автоматические обновления могут прервать работу.
— Требуется внимание к безопасности: антивирус — must-have.
— Подсистема WSL — шаг вперёд, но до полноценного Linux ещё есть путь.
А вы на какой стороне?
❤️ Linux — свобода и гибкость
👍 macOS — красота и стабильность
🔥 Windows — универсальность и удобство
Пишите в комментариях, почему ваша ОС — лучший выбор для разработчика. Без ссор — только аргументы и опыт.
P.S. Инструкция, как оставить коммент
Библиотека питониста #междусобойчик
Программисты, делитесь: на чём предпочитаете писать код?
🐧 Linux: терминал и свобода
sudo apt-get install
— и всё под контролем.Минусы:
— Настройка драйверов и оборудования может занять время.
— Работа с проприетарным ПО (например, Photoshop) — отдельный квест.
— Интерфейс не всегда дружелюбен для новичков.
🍎 macOS: стиль и стабильность
Минусы:
— Высокая цена на устройства.
— Ограниченные возможности апгрейда.
— Закрытая система с меньшей гибкостью.
🪟 Windows: универсальный солдат
Минусы:
— Автоматические обновления могут прервать работу.
— Требуется внимание к безопасности: антивирус — must-have.
— Подсистема WSL — шаг вперёд, но до полноценного Linux ещё есть путь.
А вы на какой стороне?
❤️ Linux — свобода и гибкость
👍 macOS — красота и стабильность
🔥 Windows — универсальность и удобство
Пишите в комментариях, почему ваша ОС — лучший выбор для разработчика. Без ссор — только аргументы и опыт.
P.S. Инструкция, как оставить коммент
Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🚨 JetBrains перестанет выпускать бинарные сборки PyCharm Community Edition
Начиная с версии 2025.3, бесплатная версия PyCharm Community Edition больше не будет доступна как готовая программа. JetBrains оставит только исходный код — пользователям придётся собирать IDE самостоятельно.
Что это значит:
📝 Код PyCharm CE останется открытым (Open Source).
📝 Готовые установщики (бинарные сборки) больше публиковаться не будут.
📝 Альтернатива — перейти на PyCharm Unified Edition (новая объединённая IDE с платными и бесплатными функциями).
💬 Это решение уже вызывает волну критики среди пользователей. Установка из исходников — не для всех, а Unified Edition может потребовать платную подписку.
🔗 Подробнее: что такое Unified PyCharm и как это работает
Библиотека питониста #свежак
Начиная с версии 2025.3, бесплатная версия PyCharm Community Edition больше не будет доступна как готовая программа. JetBrains оставит только исходный код — пользователям придётся собирать IDE самостоятельно.
Что это значит:
💬 Это решение уже вызывает волну критики среди пользователей. Установка из исходников — не для всех, а Unified Edition может потребовать платную подписку.
🔗 Подробнее: что такое Unified PyCharm и как это работает
Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Релизы и инструменты:
— Python 3.14.0 beta 1 — первые шаги к новому стабильному релизу
— ty — супербыстрый type checker на Rust для Python
— FastAPI Cloud — новая платформа от команды FastAPI: деплой за секунды
— epub-utils — Python-библиотека для работы с EPUB
— PyCharm Community — JetBrains больше не будет выпускать бинарные сборки CE
🧠 Советы и статьи:
— DI в Python: Easy-DI — упрощаем инъекцию зависимостей
— Псевдослучайный random — как Python генерирует случайность
— История языков программирования — Python, Java, C++, Go
— Ускоряем запуск Python-приложений — коротко и по делу
— Инструменты для ускорения разработки — Python-экосистема в деле
Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека задач по Python | тесты, код, задания
Что из перечисленного лучше всего описывает наследование?
Anonymous Quiz
63%
Способность класса выводить членов другого класса как часть своего собственного определения
10%
Средства объединения переменных и методов экземпляра с целью ограничения доступа к членам класса
3%
Основное внимание уделяется переменным и передаче переменных в функции
24%
Позволяет реализовать элегантное программное обеспечение, которое легко модифицируется
🐍 Вышел Python 3.14.0 beta 1 — первые шаги к следующему релизу
Python 3.14 теперь в бете. Это первый из четырёх запланированных бета-релизов. Важно: не использовать в проде, но — тестировать обязательно, особенно авторам библиотек.
⭐ Что нового в 3.14:
— PEP 649: отложенная оценка type annotations
— PEP 750: t-строки — шаблонные строки в духе f-строк
— PEP 784: модуль
— PEP 768: интерфейс отладки с нулевыми накладными расходами
— Улучшенные сообщения об ошибках
— Поддержка UUID версий 6–8
— Подсветка синтаксиса в
— Быстрая реализация HMAC с верифицированным кодом HACL\*
⭐ Важные изменения:
— Подписи релизов теперь не PGP, а через Sigstore
— Новый инсталлятор для Windows из Microsoft Store
— Экспериментальный JIT в macOS и Windows билдах
— Несовместимые изменения в C API и новые депрекейшены
⭐ Следующий релиз: beta 2 — 27 мая 2025
➡️ Поддержка: отчёт об ошибках
Библиотека питониста #свежак
Python 3.14 теперь в бете. Это первый из четырёх запланированных бета-релизов. Важно: не использовать в проде, но — тестировать обязательно, особенно авторам библиотек.
— PEP 649: отложенная оценка type annotations
— PEP 750: t-строки — шаблонные строки в духе f-строк
— PEP 784: модуль
compression.zstd
с поддержкой алгоритма Zstandard— PEP 768: интерфейс отладки с нулевыми накладными расходами
— Улучшенные сообщения об ошибках
— Поддержка UUID версий 6–8
— Подсветка синтаксиса в
unittest
, argparse
, json
, calendar
— Быстрая реализация HMAC с верифицированным кодом HACL\*
— Подписи релизов теперь не PGP, а через Sigstore
— Новый инсталлятор для Windows из Microsoft Store
— Экспериментальный JIT в macOS и Windows билдах
— Несовместимые изменения в C API и новые депрекейшены
Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Python Software Engineer — от 4 800 €, офис (Кипр)
Python Developer, гибрид (Москва)
Senior Python developer — от 300 000 до 350 000 ₽, удалёнка (Санкт-Петербург)
Python Developer — от 220 000 ₽, удалёнка (Москва, Санкт-Петербург, Екатеринбург, Казань)
Junior Python developer — от 100 000 до 130 000 ₽, офис (Москва)
Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Шпаргалка: функция с `yield` всегда возвращает генератор
Если в функции присутствует хотя бы один yield, Python преобразует её в генератор — независимо от того, выполнится ли yield при вызове.
Обычное поведение с возвращением списка:
А вот что происходит, если использовать генератор с
Даже при
📌 Это важно учитывать при проектировании логики, особенно если ожидается обычное значение, а не итератор.
Библиотека питониста #буст
Если в функции присутствует хотя бы один yield, Python преобразует её в генератор — независимо от того, выполнится ли yield при вызове.
Обычное поведение с возвращением списка:
def greet(as_list: bool):
message = 'hello!'
if as_list:
message_list = []
for char in message:
message_list += char
return message_list
else:
return message
>>> greet(as_list=True)
['h', 'e', 'l', 'l', 'o', '!']
>>> greet(as_list=False)
'hello!'
А вот что происходит, если использовать генератор с
yield
:def greet(as_generator: bool):
message = 'hello!'
if as_generator:
for char in message:
yield char
else:
return message
>>> greet(as_generator=True)
<generator object greet at 0x0000023F0A066F60>
>>> greet(as_generator=False)
<generator object greet at 0x0000023F0A066F60>
Даже при
as_generator=False
функция всё равно возвращает объект генератора. Это связано с тем, что наличие yield в теле функции делает её генераторной на уровне определения.📌 Это важно учитывать при проектировании логики, особенно если ожидается обычное значение, а не итератор.
Библиотека питониста #буст